#include <iostream>
#include <jsoncpp/json/json.h>
#include <unistd.h>

// {a:120, b:"123"}
int main()
{
    Json::Value part1;          // 字符串
    part1["haha"] = "haha";
    part1["hehe"] = "hehe";


    Json::Value root;   
    root["x"] = 100;
    root["y"] = 200;
    root["op"] = '+';
    root["desc"] = "this is a + oper";
    root["test"] = part1; // json套json

    //Json::FastWriter w;
    Json::StyledWriter w;            // 可读性较好
    std::string res = w.write(root); // write是进行一次序列化,返回一个string

    std::cout << res << std::endl;

    sleep(3);

    Json::Value v;
    Json::Reader r;
    r.parse(res, v); // parse是反序列化,将res(序列化后的字符串)传给v

    //as类型名,类型名第一个字符大写

    int x = v["x"].asInt();
    int y = v["y"].asInt();
    char op = v["op"].asInt();
    std::string desc = v["desc"].asString();
    Json::Value temp = v["test"]; // 对于嵌套的json,直接用Value获得就行,后面需要输出就仿照上面进行输出
    std::cout << x << std::endl;
    std::cout << y << std::endl;
    std::cout << op << std::endl;
    std::cout << desc << std::endl;



    return 0;
}
